/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jjsoft.sistemafacturacion.gco.ngc;

import com.jjsoft.sistemafacturacion.gco.dao.GenericController;
import com.jjsoft.sistemafacturacion.gco.mdl.Usuario;
import com.jjsoft.sistemafacturacion.gco.util.AtributoInvalidoException;
import com.jjsoft.sistemafacturacion.gco.util.IdDuplicadoException;
import com.jjsoft.sistemafacturacion.gco.util.UsuarioValidatorException;
import com.jjsoft.sistemafacturacion.gco.util.ValidarAtributoUtil;
import java.util.List;



/**
 *
 * @author Johnny
 */
public class UsuarioManager {

    GenericController<Usuario> controladorUsuario = new GenericController<Usuario>();

    public void crearUsuario(Usuario usuario) throws UsuarioValidatorException, IdDuplicadoException {
        try {
            ValidarAtributoUtil.validarObjetoNulo("Usuario", usuario);
            ValidarAtributoUtil.validarStringNuloVacio("Nombre de Usuario", usuario.getNombre());
            ValidarAtributoUtil.validarStringNuloVacio("Password", usuario.getPassword());
            ValidarAtributoUtil.validarDoubleNegativo("Rol", (double) usuario.getRol());
            if (controladorUsuario.create(usuario).equals("1"))
            throw new IdDuplicadoException("Usuario duplicado\n Asegurese de que no exista otro usuario con estas credenciales de acceso", usuario);
        } catch (AtributoInvalidoException ex) {
            throw new UsuarioValidatorException(ex);
        }

    }

    public void editarUsuario(Usuario usuario) throws UsuarioValidatorException {
        try {
            ValidarAtributoUtil.validarObjetoNulo("Usuario", usuario);
            ValidarAtributoUtil.validarStringNuloVacio("Nombre de Usuario", usuario.getNombre());
            if(usuario.getEstado()!=1)
                ValidarAtributoUtil.validarStringNuloVacio("Password", usuario.getPassword());
            ValidarAtributoUtil.validarDoubleNegativo("Rol", (double) usuario.getRol());
            try {
                controladorUsuario.edit(usuario);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        } catch (AtributoInvalidoException ex) {
            throw new UsuarioValidatorException(ex);
        }
    }

    public List<Usuario> listaUsuarios() {
        try {
            List<Usuario> listaUsuarios = controladorUsuario.findWhere(new Usuario(), "estado=0");
            return listaUsuarios;
        } catch (Exception ex) {
            return null;
        }
    }
    public Usuario buscarPorPassword(String password)
    {
        try{
            Usuario usuario=controladorUsuario.findWhere(new Usuario(), "password='"+password+"' and estado=0").get(0);
            return usuario;
            }
        catch(Exception ex)
        {
            return null;
        }
    }
    public Usuario buscarPorNombreYPassword(String nombre, String password)
    {
      try{
            Usuario usuario=controladorUsuario.findWhere(new Usuario(), "nombre= '"+ nombre+"' and password= '"+password+"' and estado=0").get(0);
            return usuario;
            }
        catch(Exception ex)
        {
            return null;
        }  
    }
    public Usuario buscarPorNombre(String nombre)
    {
        try{
            Usuario usuario=controladorUsuario.findWhere(new Usuario(), "nombre='"+nombre+"' and estado=0").get(0);
            return usuario;
            }
        catch(Exception ex)
        {
            return null;
        }
    }
    
}
